package one.stand.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import one.stand.aop.ApiController;
import one.stand.model.ResultModel;
import one.stand.request.*;
import one.stand.request.coupon.GoodsCouponQuery;
import one.stand.response.CompanyCouponResponse;
import one.stand.response.UserCouponResponse;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.List;

/**
 * @author: QIK
 * @CreateDate: 2019/6/24 17:40
 */
@RestController
@RequestMapping("userApi/user/coupon")
@Api(description = "用户优惠券",tags="用户优惠券")
public class UserCouponController extends BaseController {

//    /**
//     * 领取优惠券
//     * @param request
//     * @return
//     */
//    @ApiOperation(value = "领取优惠券-暂存")
//    @PostMapping("receive")
//    @ApiController(isLogin = true,paramClass = CouponRequest.class)
//    public ResultModel<Boolean> receive(@RequestAttribute CouponRequest request){
//        return userFegin.receive(request);
//    }

    /**
     * 用户自己的优惠券列表 根据参数区分已经使用或者未使用
     * @param request
     * @return
     */
    @ApiOperation(value = "个人优惠券列表,订单详情也使用此接口,选择商品是也用此接口 传入 goodstypeId 商品分类")
    @PostMapping("myList")
    @ApiController(isLogin = true,paramClass = UserCouponRequest.class)
    public ResultModel myList(@RequestAttribute UserCouponRequest request){
        return userFegin.myList(request);
    }
//    /**
//     * 按公司查询没有领取的优惠券
//     * @param request
//     * @return
//     */
//    @ApiOperation(value = "查询没有领取的优惠券,领取优惠券接口,企业id必须,登录后第一次弹出优惠券也使用此接口,pageSize可传入5")
//    @PostMapping("noReceive")
//    @ApiController(isLogin = true,paramClass = CouponRequest.class)
//    public ResultModel<List<CompanyCouponResponse>> noReceive(@RequestAttribute CouponRequest request){
//        return userFegin.noReceive(request);
//    }

    /**
     * 用户登录默认发放优惠券
     * @param request
     */
    @ApiOperation(value = "用户登录调用默认发放优惠券")
    @PostMapping("grantCoupon")
    @ApiController(isLogin = true,paramClass = GrantCouponRequest.class)
    public ResultModel grantCoupon(@RequestAttribute GrantCouponRequest request){
        return userFegin.grantCoupon(request);
    }


    /**
     * 领取优惠券
     * @param request
     * @return
     */
    @ApiOperation(value = "领取优惠券")
    @PostMapping("receiveCoupon")
    @ApiController(isLogin = true,paramClass = CouponRequest.class)
    public ResultModel<Boolean> receiveCoupon(@RequestAttribute CouponRequest request){
        return userFegin.receiveCoupon(request);
    }

    /**
     * 下单时查询 按商品分类查询我的所有优惠券 和 我的全场通用优惠券
     * @param request
     */
    @PostMapping("selectUserCouponNotUsed")
    @ApiOperation(value = "按商品分类查询我的所有优惠券 和 我的全场通用优惠券 只查询未使用的 goodsId 不为空 和 分类为0的优惠券表示可用。其他不可用")
    @ApiController(isLogin = true,paramClass = GoodsCouponQuery.class)
    public ResultModel<List<UserCouponResponse>> selectUserCouponNotUsed(@RequestAttribute GoodsCouponQuery request){
        return userFegin.selectUserCouponNotUsed(request);
    }
}
